define(["require", "exports", "vscode-languageserver-types", "vscode-css-languageservice/parser/cssParser", "vscode-css-languageservice/services/cssCompletion", "vscode-css-languageservice/services/cssHover", "vscode-css-languageservice/services/cssNavigation", "vscode-css-languageservice/services/cssCodeActions", "vscode-css-languageservice/services/cssValidation", "vscode-css-languageservice/parser/scssParser", "vscode-css-languageservice/services/scssCompletion", "vscode-css-languageservice/parser/lessParser", "vscode-css-languageservice/services/lessCompletion"], function (require, exports, vscode_languageserver_types_1, cssParser_1, cssCompletion_1, cssHover_1, cssNavigation_1, cssCodeActions_1, cssValidation_1, scssParser_1, scssCompletion_1, lessParser_1, lessCompletion_1) {
    /*---------------------------------------------------------------------------------------------
     *  Copyright (c) Microsoft Corporation. All rights reserved.
     *  Licensed under the MIT License. See License.txt in the project root for license information.
     *--------------------------------------------------------------------------------------------*/
    'use strict';
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.Range = vscode_languageserver_types_1.Range;
    exports.TextEdit = vscode_languageserver_types_1.TextEdit;
    function createFacade(parser, completion, hover, navigation, codeActions, validation) {
        return {
            configure: validation.configure.bind(validation),
            doValidation: validation.doValidation.bind(validation),
            parseStylesheet: parser.parseStylesheet.bind(parser),
            doComplete: completion.doComplete.bind(completion),
            setCompletionParticipants: completion.setCompletionParticipants.bind(completion),
            doHover: hover.doHover.bind(hover),
            findDefinition: navigation.findDefinition.bind(navigation),
            findReferences: navigation.findReferences.bind(navigation),
            findDocumentHighlights: navigation.findDocumentHighlights.bind(navigation),
            findDocumentSymbols: navigation.findDocumentSymbols.bind(navigation),
            doCodeActions: codeActions.doCodeActions.bind(codeActions),
            findColorSymbols: function (d, s) { return navigation.findDocumentColors(d, s).map(function (s) { return s.range; }); },
            findDocumentColors: navigation.findDocumentColors.bind(navigation),
            getColorPresentations: navigation.getColorPresentations.bind(navigation),
            doRename: navigation.doRename.bind(navigation),
        };
    }
    function getCSSLanguageService() {
        return createFacade(new cssParser_1.Parser(), new cssCompletion_1.CSSCompletion(), new cssHover_1.CSSHover(), new cssNavigation_1.CSSNavigation(), new cssCodeActions_1.CSSCodeActions(), new cssValidation_1.CSSValidation());
    }
    exports.getCSSLanguageService = getCSSLanguageService;
    function getSCSSLanguageService() {
        return createFacade(new scssParser_1.SCSSParser(), new scssCompletion_1.SCSSCompletion(), new cssHover_1.CSSHover(), new cssNavigation_1.CSSNavigation(), new cssCodeActions_1.CSSCodeActions(), new cssValidation_1.CSSValidation());
    }
    exports.getSCSSLanguageService = getSCSSLanguageService;
    function getLESSLanguageService() {
        return createFacade(new lessParser_1.LESSParser(), new lessCompletion_1.LESSCompletion(), new cssHover_1.CSSHover(), new cssNavigation_1.CSSNavigation(), new cssCodeActions_1.CSSCodeActions(), new cssValidation_1.CSSValidation());
    }
    exports.getLESSLanguageService = getLESSLanguageService;
});
